﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace QuanLyKhachHang.Forms
{
    #region using
    using QuanLyKhachHang.BUS;
    using QuanLyKhachHang.DTO;
    using QuanLyKhachHang.Utilities;
    #endregion

    public partial class frmDonVi : Form
    {
        private bool blnLoading;
        private DonViBUS objBUS;
        private DataSet objDS;

        public frmDonVi()
        {
            InitializeComponent();
        }

        private void frmDonVi_Load(object sender, EventArgs e)
        {
            LoadDonVi();
        }

        public void LoadDonVi()
        {
            ListViewItem objListViewItem;
            objBUS = new DonViBUS(GlobalVariables.g_strConnectionString);

            try
            {
                blnLoading = true;

                objDS = objBUS.SelectAll();
                lstvwDanhSachHienThi.Items.Clear();

                for (int i = 0; i < objDS.Tables["DonVi"].Rows.Count; i++)
                {
                    objListViewItem = new ListViewItem();
                    DataRow row = objDS.Tables["DonVi"].Rows[i];
                    objListViewItem.Text = row["MADONVI"].ToString();
                    objListViewItem.SubItems.Add(row["TENDONVI"].ToString());
                    lstvwDanhSachHienThi.Items.Add(objListViewItem);
                }

                blnLoading = false;
            }
            catch (System.Exception e)
            {
                throw new Exception(e.Message, e.InnerException);
            }
        }

        private void btnThem_Click(object sender, EventArgs e)
        {
            ActionAdd();
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            ActionDelete();
        }

        private void btnLuu_Click(object sender, EventArgs e)
        {
            ActionUpdate();
        }

        public void ActionUpdate()
        {
            try
            {
                objBUS = new DonViBUS(GlobalVariables.g_strConnectionString);

                if (txtMaDonVi.Text.Equals(""))
                {
                    MessageBox.Show("Bạn chưa nhập mã đơn vị", "Bao Loi",
                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    return;
                }

                if (txtTenDonVi.Text.Equals(""))
                {
                    MessageBox.Show("Bạn chưa nhập tên đơn vị", "Bao Loi",
                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    return;
                }

                DonViDTO objDto = new DonViDTO
                {
                    MADONVI = txtMaDonVi.Text,
                    TENDONVI = txtTenDonVi.Text
                };
                
                if (!objBUS.Update(objDto))
                {
                    MessageBox.Show("Thao tác cập nhật thất bại", "Bao Loi",
                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
                else
                {
                    MessageBox.Show("Dữ liệu đã được cập nhật", "Thông báo",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                    LoadDonVi();
                }
            }
            catch (System.Exception e)
            {
                throw new Exception(e.Message, e.InnerException);
            }
        }

        private void ActionDelete()
        {
            //neu o o textname chua co du lieu
            if (txtMaDonVi.Text.Equals(""))
            {
                MessageBox.Show("Bạn chưa chọn đơn vị để xóa", "Bao Loi",
                    MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                return;
            }
            else
            {
                objBUS = new DonViBUS(GlobalVariables.g_strConnectionString);

                if (!objBUS.Delete(txtMaDonVi.Text))
                {
                    MessageBox.Show("Thao tác xóa thất bại", "Bao loi",
                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
                else
                {
                    txtMaDonVi.Text = String.Empty;
                    txtTenDonVi.Text = String.Empty;
                    MessageBox.Show("Dữ liệu đã được xóa", "Thông báo",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                    LoadDonVi();
                }
            }
        }

        private void ActionAdd()
        {
            try
            {
                objBUS = new DonViBUS(GlobalVariables.g_strConnectionString);

                if (txtMaDonVi.Text.Equals(""))
                {
                    MessageBox.Show("Bạn chưa nhập mã đơn vị", "Bao Loi",
                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    return;
                }

                if (txtTenDonVi.Text.Equals(""))
                {
                    MessageBox.Show("Bạn chưa nhập tên đơn vị", "Bao Loi",
                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                    return;
                }

                DonViDTO objDto = new DonViDTO
                {
                    MADONVI = txtMaDonVi.Text,
                    TENDONVI = txtTenDonVi.Text
                };

                if (!objBUS.Insert(objDto))
                {
                    MessageBox.Show("Thao tác thêm thất bại", "Bao Loi",
                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
                else
                {
                    MessageBox.Show("Dữ liệu đã được thêm", "Thông báo",
                        MessageBoxButtons.OK, MessageBoxIcon.Information);
                    LoadDonVi();
                }
            }
            catch (System.Exception e)
            {
                throw new Exception(e.Message, e.InnerException);
            }
        }

        private void lstvwDanhSachHienThi_Click(object sender, EventArgs e)
        {
            objBUS = new DonViBUS(GlobalVariables.g_strConnectionString);

            try
            {
                ListView.SelectedListViewItemCollection lstview =
                    this.lstvwDanhSachHienThi.SelectedItems;
                
                objDS = objBUS.SelectByID(lstview[0].SubItems[0].Text);
                DataRow row = objDS.Tables["DonVi"].Rows[0];

                txtMaDonVi.ReadOnly = true;
                txtMaDonVi.BackColor = Control.DefaultBackColor;
                txtMaDonVi.Text = row["MADONVI"].ToString();
                txtTenDonVi.Text = row["TENDONVI"].ToString();
            }
            catch (System.Exception ex)
            {
                throw new Exception(ex.Message, ex.InnerException);
            }
        }

        private void btnReset_Click(object sender, EventArgs e)
        {
            txtMaDonVi.Text = "";
            txtTenDonVi.Text = "";
            txtMaDonVi.ReadOnly = false;
            txtMaDonVi.BackColor = Color.White;
        }
    }
}
